Serial Attached SCSI (Small Computer System Interface), or SAS, is a connection-oriented protocol that allows storage devices, such as servers and disk drives, to communicate through a network of high-speed serial physical interconnects. Connections among host devices (e.g. servers) and target devices (e.g. hard disk drives, or “HDD”s, or simply “drives”) are managed by intermediate devices called SAS expanders (or simply “expanders”). The SAS expanders act as connection management agents similar to a switch element having physical connections to multiple host devices or target devices simultaneously.
The SAS protocol (ANSI INCITS. T10/2228-D Revision 5—SAS Protocol Layer—2(SPL-2): May 10, 2012) specifies a protocol stack that provides serial physical interconnects that can be used to connect target devices such as hard disk drives and host devices together. It specifies the transport layer protocols to transport SCSI commands, serial ATA (SATA) commands and management commands among storage devices. The protocol is intended to be used in conjunction with SCSI and ATA command sets. Thus, target devices may include either SAS target devices, or serial SATA-compliant target devices such as SATA hard disk drives and other SATA storage devices which are widely used in the consumer personal computer (PC) industry. The SAS protocol defines the function of a SAS expander device which is part of the service delivery subsystem and facilitates communication between target devices. Thus, the SAS expanders provide the switching and routing function among the target devices that are attached to it.
Simple SAS topologies may include multiple target devices connected through a single expander to a host device, and complex topologies may include multiple target devices connected through multiple expanders to multiple host devices in a tree structure. Each target device, expander and host has a unique dedicated SAS address.
The SAS protocol adopts a point-to-point connection mechanism. Similarly, the SATA specification generally describes a point-to-point interface between a host and an ATA device. The target device and host device communicate to each other through an OPEN request. The OPEN request from a host device or a target device flows through one or more expanders to reach the target device or host device, respectively. The expander performs a point-to-point connection in order to route the OPEN request from the source to the target. The communication link is considered set-up when an OPEN request from the target device is accepted by the host device, or an OPEN request from the host device is accepted by the target device. At this point, information can be transferred between the host device and target device.
Host devices, expander devices, and target devices may be capable of supporting different link speeds. For example, the SAS protocol supports both “fast” 12 Gbps (or “12G”) and “slow” 6 Gbps (or “6G”) link rates. 6G SAS target devices are now in common use and 12G SAS target devices are becoming available. 6G SATA target devices are also in common use, but it is not presently expected that 12G SATA devices will become available. While it is expected that, over time, 12G SAS target devices will achieve widespread adoption, the first generation of 12G SAS topologies is likely to have only 6G SATA and 6G SAS hard drives. In any event, there will eventually remain an ongoing need to support 6G SAS and SATA legacy devices.
When “fast” host controllers are mixed with “slow” target devices in a particular SAS topology, the connection operates at the fastest common rate. If this fastest common rate is not the fastest speed for the SAS topology, however, then the throughput of the system is reduced. This feature is called “rate matching”. Reference in this regard is made to FIG. 1 which shows an exemplary SAS topology containing both fast (12G) and slow (6G) target devices. The topology in FIG. 1 includes a 12G host controller 50, 6G target devices 52A, 52B, 12G target devices 54A, 54B, and a 12G SAS expander 56.
The host controller 50 may interconnect at 12G via a link 58 directly to a 12G drive 54A and may also connect at 12G via a link 60 to the SAS expander 56 which is connected at 12G via links 62A, 62B, to the 12G target devices 54A, 54B. The host controller 50 may also connect to the 6G target devices 52A, 52B via the SAS expander 56, but in this case the links 66A, 66B between the SAS expander 56 and the target devices 52A, 52B are limited to 6G; thus, a link 68 formed between the host controller 50 and 6G target device 52A, for example, is also limited to 6G.
In order to sustain 6G link 68, the 12G phy of the host controller 50 must insert a deletable primitive for every other primitive destined for the 6G target device 52A. This causes the host controller 50 to communicate at a 6G logical link rate despite its phy operating at 12G. The host controller 50 therefore has a connection open twice as long as if it were connected to a 12G target. This reduces the efficiency of the data transfer to about 50% as the host controller 50 could have communicated to two targets in the same amount of time.
In order to address this problem, the SAS-2 protocol adds a multiplexing feature which provides time sharing of a faster physical link by multiples of two logical link rates. Accordingly, and with reference to FIG. 2, a 12G multiplex-enabled host 80 can connect to two 6G devices 52A, 52B through a 12G SAS expander 82 which also has the multiplexing feature enabled. (The host 80 is shown as being linked through a 12G SAS expander 56 to the multiplex-enabled expander 82, but could alternatively be linked directly to the latter.) In this case, the host-side link 84 retains a 12G link rate while corresponding 6G links 86A, 86B are formed to the respective 6G devices 52A, 52B. It thus remains possible for the host controller 80 to form 12G links 88A, 88B with other 12G devices 90A, 90B via the 12G SAS expander 56. Thus, the multiplexing feature of the SAS-2 protocol, while addressing the problem of rate-matching, introduces new disadvantages.
The arrangement of FIG. 2 results in the disadvantage, however, that a link from the host controller 80 to any 12G devices via the multiplex-enabled expander 82, such as 12G target devices 92A, 92B, is similarly limited to 6G via links 94A, 94B; in other words, the 12G host controller 80 cannot link at 12 Gbps to the 12G target devices 92A, 92B through that multiplex-enabled SAS expander 82. Consequently, the location of 12G target devices in the topology is practically limited once a particular host device is connected to a multiplex-enabled SAS expander, as in such case it would not be feasible to communicate through that expander with a 12 Gbps device at a 12 Gbps rate.
U.S. Pat. No. 7,539,798 to Voorhees et al. describes a device for addressing delays caused by attachment of a SATA drive to a SAS domain resulting from different effective data transfer rates between SATA and SAS. Voorhees et al. teach that data transfers between a SAS initiator and a SAS drive in a SAS domain may be delayed due to the usage of intermediate links by an inefficient SATA drive also connected to the SAS domain. A SATA degradation mitigation device (“SDMD”) is described which, during a read transaction from a SATA drive, receives and buffers data at a relatively lower rate and transmits the buffered data at a higher rate to the SAS domain. During a write transaction, the SDMD receives and buffers data from a SAS initiator at a higher rate, allowing disconnection from the intermediate links and subsequently sending the data at a lower rate to the SATA drive. Voorhees et al. do not address the problem, however, of optimizing connections between SAS initiators and SAS drives, and in particular between fast SAS initiators and slow SAS drives. Moreover, Voorhees et al. do not specify any particular utilization of the respective SAS and SATA protocols in order to optimize buffering between SAS initiators and SATA drives.
Accordingly, there remains a need for means to optimize data transfers between SAS initiators and SAS and SATA drives including when the SAS initiators on the one hand, and the SAS or SATA drives on the other, operate at different effective data transfer rates.